#include <iostream>
#include <unistd.h>
#include <string.h>
#include "ShareMemory.hpp"
#include "Time.hpp"
#include "Fifo.hpp"

int main()
{
    std::cout << "time: " << GetCurrTime() << std:: endl;
    shm.CreateShm();
    shm.AttachShm();

    gpipe.OpenPipeForRead();
    // sleep(10);
    // 在这里进行IPC
    // server拿到的地址可能与client不一样，因为各自有各自的地址空间，但大小一定是一样的
    struct data* image = (struct data*)shm.GetAddr();

    while(true)
    {
        gpipe.Wait();

        printf("status: %s\n", image->status);
        printf("lasttime: %s\n", image->lasttime);
        printf("image: %s\n", image->image);

        strcpy(image->status, "过期");
    }

    //sleep(10);
    shm.DetachShm();
    shm.DeleteShm();

    return 0;
}








// int main()
// {
//     // 1. 创建key
//     key_t k = ::ftok(gpath.c_str(), gprojId);
//     if(k < 0)
//     {
//         std::cerr << "ftok error" << std::endl;
//         return 1;
//     }
//     std::cout << "k : " << ToHex(k) << std::endl;

//     // 2.创建共享内存 && 获取
//     // 共享内存也有权限，所以这里 | 上权限gmode
//     int shmid = ::shmget(k, gshmsize, IPC_CREAT | IPC_EXCL | gmode);
//     if(shmid < 0)
//     {
//         std::cerr << "shmget error" << std::endl;
//         return 2;
//     }
//     std::cout << "shmid: " << std::endl;

//     sleep(5);

//     // 3.删除共享内存
//     shmctl(shmid, IPC_RMID, nullptr);
 
//     return 0;
// }